package com.vegetable.common.annotation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 成本分摊操作注解
 * 用于标记成本分摊相关的方法，使其能被成本变化切面监控到
 */
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface CostAllocationOperation {
    
    /**
     * 操作类型描述
     */
    String value() default "";
    
    /**
     * 操作类型
     */
    OperationType type() default OperationType.ALLOCATION;
    
    /**
     * 操作类型枚举
     */
    enum OperationType {
        /**
         * 成本分摊
         */
        ALLOCATION,
        
        /**
         * 成本调整
         */
        ADJUSTMENT
    }
}